﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using clEntidad;
using clBUS;
using clEntidad.Ex;

namespace portero_.cSeguridad
{
    public partial class frmCambiaPwd : Form
    {
        public int id;
        public frmCambiaPwd(int id,bool claveCaduco)
        {
            InitializeComponent();
            this.id = id;
            this.claveCaduco = claveCaduco;
        }
        public int idLocal { get; set; }
        private void btIntro_Click(object sender, EventArgs e)
        {
            if (tbPwdN.Text == "")
            {
                MessageBox.Show("Debe ingresar clave nueva", Constantes.cNOMBRE_SIS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                tbPwdN.Focus();
                return;
            }

            if (tbPwdN.Text != tbPwdNR.Text)
            {
                MessageBox.Show("Clave nueva y su repetición deben ser iguales", Constantes.cNOMBRE_SIS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                tbPwdN.Focus();
                return;
            }
            BUSUsuario objBUS = new BUSUsuario(Constantes.CADENA_BD);
            if (claveCaduco)
            {
                try
                {
                    Usuario user = objBUS.get(this.id);
                    Constantes.USUARIO = objBUS.validaLogin(user.login, tbPwd.Text, true, tbPwdN.Text, idLocal);
                    this.Close();
                    new frmMain().Show();
                }
                catch (LoginException ex)
                {
                    tbPwd.Focus();
                    MessageBox.Show(ex.Message, Constantes.cNOMBRE_SIS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (BUSException ex)
                {
                    tbPwd.Focus();
                    MessageBox.Show(ex.Message, Constantes.cNOMBRE_SIS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else
            {
                try
                {
                    Usuario user = objBUS.get(this.id);
                    objBUS.cambiaClave(user.login, tbPwd.Text, tbPwdN.Text, Constantes.LOCAL.id);
                    MessageBox.Show("El cambio de clave fue satisfactorio", Constantes.cNOMBRE_SIS , MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.Close();

                }
                catch (LoginException ex)
                {
                    tbPwd.Focus();
                    MessageBox.Show(ex.Message, Constantes.cNOMBRE_SIS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (BUSException ex)
                {
                    tbPwd.Focus();
                    MessageBox.Show(ex.Message, Constantes.cNOMBRE_SIS, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }

        }

        private void btSalir_Click(object sender, EventArgs e)
        {
            if (claveCaduco)
            {
                this.Close();
                Constantes._logger.Info("Fin sin login con clave caducada");
                frmLogin.ofrmLogin.Close();
            }
            else
                this.Close();
        }
        public bool claveCaduco { get; set; }
        public Usuario usuario { get; set; }
        private void frmCambiaPwd_Load(object sender, EventArgs e)
        {
            BUSUsuario objBUS = new BUSUsuario(Constantes.CADENA_BD);
            Usuario elem = objBUS.get(this.id);
            tbUser.Text = elem.nombre;
            if (!claveCaduco)
                btSalir.Text = "Cancelar";
        }

        private void tbPwd_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
                SendKeys.Send("{TAB}");
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
                SendKeys.Send("{TAB}");
        }

        private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
                SendKeys.Send("{TAB}");
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void frmCambiaPwd_Shown(object sender, EventArgs e)
        {
            tbPwd.Focus();
        }

    }
}
